Firebird
PostgreSQL

Firebird / Interbase to PostgreSQL Converter

Schema, indexes, foreign keys and rows into PostgreSQL, Amazon RDS, Aurora, Azure, or Google Cloud SQL - once, or on a schedule while you cut over.

Version
5.3.0
Release Date
Oct. 22, 2026
Size
21.4 MB
Platform
Windows 10 or later

Rather not run it yourself?

Let us do the migration →

Copy a Firebird database into PostgreSQL without writing the target schema by hand. DBConvert connects to the Firebird server and to PostgreSQL, proposes a PostgreSQL type for every column, and creates the tables, indexes, and foreign keys before it moves a row.

  • Reads Firebird databases on a local or remote Firebird server. Tested against Firebird 3 and Firebird 5, including the INT128, DECFLOAT and time-zone types Firebird 4 introduced.
  • Writes to PostgreSQL on your own server, Amazon RDS / Aurora, Azure Database for PostgreSQL, Google Cloud SQL, or Supabase.
  • Converts the database once, or keeps PostgreSQL in step with Firebird on a schedule while you cut over. The same download converts PostgreSQL back into Firebird.
  • Runs on Windows as a desktop application.
How it runs

A Windows application that talks to both servers

You install it, point it at the Firebird server and at PostgreSQL, and transfer directly between the servers. Connections, tables, and mappings remain available on separate screens as you refine the job.

A path, not a database name

Firebird has no list of databases to pick from. You enter the server's host and the database's path on that server - a .fdb or .gdb file - or its alias. The Browse button opens a file dialog only when the server is this machine, because the file has to exist where the server runs.

The character set is chosen, not guessed

The connection's character set decides how every text value is read. The list offers only the sets the Firebird driver can map, with UTF8 first. NONE is not offered: the driver would read it as Windows-1251.

Saved and repeatable

A job stores both connections, the table selection, and the options. Run it again from the interface, or start it by name from a batch file or Task Scheduler with --run-job. Sessions saved in the previous Firebird & PostgreSQL converter can be imported.

Two modes, one download

Convert once, or keep PostgreSQL in step with Firebird

One download covers both. You choose the mode when you set up the job.

One-time conversion

Schema, indexes, foreign keys and rows in one pass, with the type mapping you reviewed.

  • The run reports rows received per table - compare them against the source before you switch the application over to PostgreSQL.

Repeat synchronization

Keep the Firebird application running while PostgreSQL is loaded and tested.

  • Run the job on a schedule, or start it by hand.
  • Rows are compared by key and only the ones that differ are written, so a sync straight after a conversion has nothing to do.
  • A table without a primary key gives the comparison nothing to match on, so it is replaced in full on every run.
What needs attention

How DBConvert handles the Firebird → PostgreSQL differences

Every mapping below is a default you can review or override per column before the run.

In Firebird Why it does not carry over What DBConvert does
Numbers
NUMERIC, DECIMAL Firebird enforces the size of the storage, not the declared precision: a NUMERIC(4,2) column accepts 327.67. Created with the precision of that storage - 5, 10, 18 or 39 digits - and the declared scale, so every value Firebird accepted fits.
INT128 Added in Firebird 4. PostgreSQL has no 128-bit integer. Becomes NUMERIC(39), which holds the full range.
DECFLOAT(16), DECFLOAT(34) Decimal floating point, with an exponent range no fixed-precision column can declare. Becomes NUMERIC without a precision, which holds a DECFLOAT(34) value at any exponent, and NaN.
BOOLEAN Nothing to reconcile - both engines have a real boolean. Stays BOOLEAN.
Date and time
TIME Firebird keeps time of day to a ten-thousandth of a second. Arrives as TIME with all four fractional digits: 23:59:59.9999 stays 23:59:59.9999.
TIME WITH TIME ZONE, TIMESTAMP WITH TIME ZONE Added in Firebird 4. The value carries a zone, either a region such as Europe/Prague or an offset. Become TIMETZ(4) and TIMESTAMPTZ(4). The instant is kept; a region name is not, because PostgreSQL does not store one.
Text
CHAR(n), VARCHAR(n) Firebird's system tables record a UTF8 column's length in bytes, four per character. Created at the declared length in characters: a UTF8 CHAR(10) stays CHAR(10). A VARCHAR longer than 4,000 characters becomes TEXT.
BLOB SUB_TYPE TEXT Text of unlimited length, stored in the column's character set. Becomes TEXT, read in the connection's character set so Czech, Cyrillic or Japanese text arrives as written.
Binary
BLOB SUB_TYPE BINARY, BINARY, VARBINARY, CHARACTER SET OCTETS Raw bytes, including the CHAR(16) CHARACTER SET OCTETS columns older databases use for UUID keys. Become BYTEA, read as bytes rather than text, so a zero byte at the start, middle or end of a value survives.
Structure
Identifier case Firebird stores unquoted names in upper case; PostgreSQL folds unquoted names to lower case. Names arrive as Firebird stores them, so a Firebird customer table is "CUSTOMER" in PostgreSQL and has to be quoted in queries. Rename tables and columns on the mapping screen before the run.

Procedural code stays behind

The migration covers tables - their fields, types, defaults, and indexes - and the foreign keys. Firebird PSQL stored procedures, triggers, computed-by columns, and event handlers stay in the source and are rewritten by hand in PL/pgSQL. That is rewrite work on any route.

Where this tool stops

There is no SSH tunnel on the Firebird side: the Firebird server's port, 3050 by default, has to be reachable from the machine running DBConvert. Synchronization is scheduled, not continuous - each run compares the tables and writes the difference, which suits a staged cut-over rather than replication within seconds.

Supported versions and services

Firebird

  • Firebird 2.x, 3.x, 4.x, 5.x and InterBase

PostgreSQL

  • PostgreSQL 8.x through 17.x
  • Amazon RDS / Aurora for PostgreSQL, Azure Database for PostgreSQL, Google Cloud SQL, Supabase
  • PostgreSQL schemas (public, custom schemas)

How to migrate Firebird to PostgreSQL

1

Setup: connect Firebird and PostgreSQL

Pick Convert or Sync, then choose the source and destination connections side by side on one screen. A connection is saved once and reused by every job.

The Setup step in DBConvert: the mode, the source and destination connections side by side, and the job name

Firebird source

Enter the Firebird server's host and the database's path on that server, or its alias, then pick the connection character set — UTF8 unless the database was created with another. See Firebird source settings.

PostgreSQL target

Use the PostgreSQL connection guide for local PostgreSQL, Amazon RDS / Aurora, Azure Database for PostgreSQL, Google Cloud SQL, or Supabase.

Move Firebird data into PostgreSQL

Download the current build and run the first job against your own database.

Windows Windows 10 or later · 21.4 MB